/*eslint-env node*/
var fs = require('fs-extra');
var path = require('path');
var version = require('./package.json').version;

// Custom webpack rules are generally the same for all webpack bundles, hence
// stored in a separate local variable.
var rules = [{ test: /\.css$/, use: ['style-loader', 'css-loader'] }];

// The nbextension file directory.
var nbextensionDir = path.resolve(__dirname, '..', 'ipympl', 'nbextension');

// Copy the package.json to nbextension so we can inspect its version.
fs.copySync('./package.json', path.join(nbextensionDir, 'package.json'));

module.exports = [
    {
        // Notebook extension
        //
        // This bundle only contains the part of the JavaScript that is run on
        // load of the notebook. This section generally only performs some
        // configuration for requirejs, and provides the legacy
        // "load_ipython_extension" function which is required for any notebook
        // extension.
        //
        entry: './src/nb_extension.js',
        output: {
            filename: 'extension.js',
            path: nbextensionDir,
            libraryTarget: 'amd',
        },
    },
    {
        // Bundle for the notebook containing the custom widget views and
        // models
        //
        // This bundle contains the implementation for the custom widget views
        // and models.
        //
        entry: './src/nb_index.js',
        output: {
            filename: 'index.js',
            path: nbextensionDir,
            libraryTarget: 'amd',
            publicPath: '',
        },
        devtool: 'source-map',
        module: {
            rules: rules,
        },
        externals: ['@jupyter-widgets/base'],
    },
    {
        // Embeddable jupyter-matplotlib bundle
        //
        // This bundle is generally almost identical to the notebook bundle
        // containing the custom widget views and models.
        //
        // The only difference is in the configuration of the webpack public
        // path for the static assets.
        //
        // It will be automatically distributed by unpkg to work with the
        // static widget embedder.
        //
        // The target bundle is always `dist/index.js`, which is the path
        // required by the custom widget embedder.
        //
        entry: './src/index.js',
        output: {
            filename: 'index.js',
            path: path.resolve(__dirname, 'dist'),
            libraryTarget: 'amd',
            publicPath:
                'https://unpkg.com/jupyter-matplotlib@' + version + '/dist/',
        },
        devtool: 'source-map',
        module: {
            rules: rules,
        },
        externals: ['@jupyter-widgets/base'],
    },
];
